package gui;

import javax.swing.JPanel;
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Rectangle;
import javax.swing.JComboBox;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;

import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;

import negocios.Cor;
import negocios.Produto;
import negocios.Fachada;

import javax.swing.WindowConstants;
import javax.swing.JRadioButton;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.DefaultComboBoxModel;
import java.lang.Object;
import javax.swing.border.LineBorder;
import javax.swing.DefaultListModel;

public class EditaRemoveProduto extends JDialog {
	

		private static final long serialVersionUID = 1L;
		private JPanel jContentPane = null;
		private JTextField tDescricao = null;
		private JButton bEditar = null;
		private JButton bExcluir = null;
		private JButton bCancelar = null;
		private JRadioButton rEdit = null;
		private JRadioButton rExcluir = null;
		private JTextField tFiltro = null;
		private JComboBox coption = null;
		private JScrollPane spFiltro = null;
		private JList lstFiltro = null;
		private JLabel jLFiltro = null;
		private JLabel jLOpcao = null;
		private JLabel jLResultado = null;
		private JLabel jLCodigo = null;
		private JLabel jLDescricao = null;
		private JLabel lLinha = null;
		private JLabel jLabel1 = null;
		private JLabel jLabel = null;
		private JLabel jLabel2 = null;
		private Produto[] filtragem;
		private ButtonGroup grupo;
		private JTextField tDescricao1 = null;
		private JTextField tDescricao2 = null;
		private JTextField tDescricao3 = null;
		private JTextField tDescricao4 = null;
		private JTextField tDescricao5 = null;
		
	
	public EditaRemoveProduto(Frame owner) {
		super(owner);
		initialize();
	}

	private void initialize() {
		this.setSize(738, 340);
		this.setResizable(false);
		this.setTitle("SIGConfex Editar Remover Produtos");
		this.setModal(true);
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		this.setContentPane(getJContentPane());
		this.setLocationRelativeTo(null);
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(501, 116, 110, 16));
			jLabel2.setText("Codigo Sequencial");
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(501, 66, 49, 16));
			jLabel.setText("Cole��o");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(289, 216, 40, 16));
			jLabel1.setText("Familia");
			lLinha = new JLabel();
			lLinha.setBounds(new Rectangle(289, 166, 34, 16));
			lLinha.setText("Linha");
			jLDescricao = new JLabel();
			jLDescricao.setBounds(new Rectangle(289, 116, 77, 14));
			jLDescricao.setText("Artigo");
			jLCodigo = new JLabel();
			jLCodigo.setBounds(new Rectangle(289, 66, 65, 16));
			jLCodigo.setText("Descricao");
			jLResultado = new JLabel();
			jLResultado.setBounds(new Rectangle(28, 121, 84, 21));
			jLResultado.setFont(new Font("Dialog", Font.BOLD, 14));
			jLResultado.setText("Resultado:");
			jLOpcao = new JLabel();
			jLOpcao.setFont(new Font("Dialog", Font.BOLD, 14));
			jLOpcao.setSize(new Dimension(53, 22));
			jLOpcao.setLocation(new Point(26, 64));
			jLOpcao.setText("Opcao:");
			jLFiltro = new JLabel();
			jLFiltro.setBounds(new Rectangle(26, 7, 55, 22));
			jLFiltro.setFont(new Font("Dialog", Font.BOLD, 18));
			jLFiltro.setText("Filtro:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getGrupo(), null);
			jContentPane.add(getTFiltro(), null);
			jContentPane.add(getCoption(), null);
			jContentPane.add(getSpFiltro(), null);
			jContentPane.add(getBEditar(), null);
			jContentPane.add(getBExcluir(), null);
			jContentPane.add(getBCancelar(), null);
			jContentPane.add(getRExcluir(), null);
			jContentPane.add(getREdit(), null);
			jContentPane.add(jLFiltro, null);
			jContentPane.add(jLOpcao, null);
			jContentPane.add(jLResultado, null);
			jContentPane.add(jLCodigo, null);
			jContentPane.add(jLDescricao, null);
			jContentPane.add(lLinha, null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(jLabel, null);
			jContentPane.add(jLabel2, null);
			jContentPane.add(getTDescricao1(), null);
			jContentPane.add(getTDescricao2(), null);
			jContentPane.add(getTDescricao3(), null);
			jContentPane.add(getTDescricao4(), null);
			jContentPane.add(getTDescricao5(), null);
			ButtonGroup grupo = new ButtonGroup();
			grupo.add(getREdit());
			grupo.add(getRExcluir());
			
		}
		return jContentPane;
	}

	private JTextField getGrupo() {
		if (tDescricao == null) {
			tDescricao = new JTextField();
			tDescricao.setBounds(new Rectangle(289, 91, 173, 20));
			tDescricao.setEnabled(false);
			tDescricao.setVisible(true);
		}
		return tDescricao;
	}
	
	private JButton getBEditar() {
		if (bEditar == null) {
			bEditar = new JButton();
			bEditar.setEnabled(false);
			bEditar.setBounds(new Rectangle(353, 276, 85, 20));
			bEditar.setText("Editar");
			bEditar.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					String desc = tDescricao.getText();
					String artigo = tDescricao1.getText();
					String linha = tDescricao2.getText();
					String familia = tDescricao3.getText();
					String colecao = tDescricao4.getText();
					String codsequ= tDescricao5.getText();	
					
					Produto produto = new Produto();
					produto.setDescricao(desc);
					produto.setArtigo(artigo);
					produto.setLinha(linha);
					produto.setFamilia(familia);
					produto.setColecao(colecao);
					produto.setCodigosequencial(codsequ);
					//int codtemp = Integer.parseInt();
					
					
		
					Produto x=null;
					try{
						x = Fachada.getInstancia().ConsultarProduto(produto,false);
						if (x==null){
							Fachada.getInstancia().editarProduto(produto);
							JOptionPane.showMessageDialog(null,"Produto editado com sucesso.","Confirmacao de edicao",JOptionPane.INFORMATION_MESSAGE,null);
//							grupo.clearSelection();
						}else JOptionPane.showMessageDialog(null,"Produto já existente.","Confirmacao de edicao",JOptionPane.ERROR_MESSAGE,null);
					}catch(NoSuchElementException e1){
						//grupo.clearSelection();
						e1.printStackTrace();
					}
					}
				
			});
		}
		return bEditar;
	}
	
	private JButton getBExcluir() {
		if (bExcluir == null) {
			bExcluir = new JButton();
			bExcluir.setEnabled(false);
			bExcluir.setBounds(new Rectangle(456, 276, 85, 20));
			bExcluir.setText("Remover");
			bExcluir.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent e) {
					int i = lstFiltro.getSelectedIndex();
					int status = JOptionPane.showConfirmDialog(null,"Deseja realmente excluir esse registro?","Mensagem de saida",JOptionPane.YES_NO_OPTION);					
					if (status==JOptionPane.YES_OPTION){
						Fachada.getInstancia().excluirProduto(filtragem[i].getCodigosequencial());
						JOptionPane.showMessageDialog(null,"Produto excluido com sucesso.","Confirmacao de exclusao",JOptionPane.INFORMATION_MESSAGE,null);
						((DefaultListModel)(lstFiltro.getModel())).remove(i);
				
//						grupo.clearSelection();
					}
				}
				
			});
		}
		return bExcluir;
	}
	private JButton getBCancelar() {
		if (bCancelar == null) {
			bCancelar = new JButton();
			bCancelar.setText("Cancelar");
			bCancelar.setBounds(new Rectangle(554, 276, 85, 20));
			bCancelar.addActionListener(new ActionListener(){
	
				@Override
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if (e.getSource()==bCancelar){
						int resposta =JOptionPane.showConfirmDialog(jContentPane,"Deseja Cancelar o Edicao?","Confirmacao",JOptionPane.OK_CANCEL_OPTION);
						if (resposta==JOptionPane.OK_OPTION) {

							setVisible(false);
							dispose();

							dispose();

						}
					}
				}
			});
		}
		return bCancelar;
	}
	private JRadioButton getREdit() {
		if (rEdit == null) {
			rEdit = new JRadioButton();
			rEdit.setText("Editar");
			rEdit.setBounds(new Rectangle(256, 12, 103, 26));
			rEdit.setFont(new Font("Dialog", Font.BOLD, 12));
			rEdit.setBackground(new Color(238, 238, 238));
			rEdit.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					try{
						int i = lstFiltro.getSelectedIndex();
						tDescricao.setText(filtragem[i].getDescricao());
						tDescricao1.setText(filtragem[i].getArtigo());
						tDescricao2.setText(filtragem[i].getLinha());
						tDescricao3.setText(filtragem[i].getFamilia());
						tDescricao4.setText(filtragem[i].getColecao());
						tDescricao5.setText(filtragem[i].getCodigosequencial());	
					
						bEditar.setEnabled(true);
						bExcluir.setEnabled(false);
						tDescricao.setEnabled(true);
						tDescricao1.setEnabled(true);
						tDescricao2.setEnabled(true);
						tDescricao3.setEnabled(true);
						tDescricao4.setEnabled(true);
						tDescricao5.setEnabled(true);
					}
					catch(NullPointerException e1){
						grupo.clearSelection();
						JOptionPane.showMessageDialog(null,"Por favor, preencha o campo filtro!","Sig Confex - Erro!",	JOptionPane.INFORMATION_MESSAGE,null);
						tFiltro.requestFocus();
					}
					catch(ArrayIndexOutOfBoundsException e2){
						grupo.clearSelection();
						JOptionPane.showMessageDialog(null,"Por favor, selecione um item na lista!","Sig Confex - Erro!",	JOptionPane.INFORMATION_MESSAGE,null);
						
					}
				}
				
			});
		}
		return rEdit;
	}
	private JRadioButton getRExcluir() {
		if (rExcluir == null) {
			rExcluir = new JRadioButton();
			rExcluir.setText("Excluir");
			rExcluir.setBounds(new Rectangle(363, 12, 115, 27));
			rExcluir.setFont(new Font("Dialog", Font.BOLD, 12));
			rExcluir.setBackground(new Color(238, 238, 238));
			rExcluir.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent e) {
					tDescricao.setEnabled(false);
					tDescricao1.setEnabled(false);
					tDescricao2.setEnabled(false);
					tDescricao3.setEnabled(false);
					tDescricao4.setEnabled(false);
					tDescricao5.setEnabled(false);
					
					bExcluir.setEnabled(true);
					bEditar.setEnabled(false);
					
				}
				
			});
		}
		return rExcluir;
	}
	private JTextField getTFiltro() {
		if (tFiltro == null) {
			tFiltro = new JTextField();
			tFiltro.setToolTipText("Digite o nome ou parte do nome da produto");
			tFiltro.setLocation(new Point(26, 36));
			tFiltro.setSize(new Dimension(120, 20));
		}
		return tFiltro;
	}
	private JComboBox getCoption() {
		if (coption == null) {
			coption = new JComboBox();
			coption.setBounds(new Rectangle(26, 98, 139, 20));
			coption.setDoubleBuffered(false);
			coption.setModel(new DefaultComboBoxModel(new Object[] {"Escolha uma opcao", "Inicia com", "Contem", "Termina Com"}));
			coption.setBorder(null);
			coption.addActionListener(new ActionListener() {
				
				public void actionPerformed(ActionEvent event) {
					
					if(tFiltro.getText().equals("")){
						JOptionPane.showMessageDialog(null,"Por favor, preencha todos os campos!","Sig Confex - Erro!",	JOptionPane.INFORMATION_MESSAGE,null);
						tFiltro.requestFocus();
					}else{
						((DefaultListModel) (lstFiltro.getModel())).clear();
						Produto produto = new Produto();
						produto.setDescricao(tFiltro.getText());
						
						filtragem = Fachada.getInstancia().listarProduto(produto,coption.getSelectedItem().toString());
						for (int i = 0; i < filtragem.length; i++) {
							((DefaultListModel) (lstFiltro.getModel())).addElement(filtragem[i].getDescricao());
						}
					}
				}
			});
		}
		return coption;
	}
	private JScrollPane getSpFiltro() {
		if (spFiltro == null) {
			spFiltro = new JScrollPane();
			spFiltro.setBounds(new Rectangle(23, 146, 249, 150));
			spFiltro.setViewportView(getLstFiltro());
		}
		return spFiltro;
	}
	private JList getLstFiltro() {
		if (lstFiltro == null) {
			lstFiltro = new JList();
			lstFiltro.setBorder(new LineBorder(Color.black, 1, false));
			lstFiltro.setVisibleRowCount(5);
			lstFiltro.setModel(new DefaultListModel());

		}
		return lstFiltro;
	}

	/**
	 * This method initializes tDescricao1	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTDescricao1() {
		if (tDescricao1 == null) {
			tDescricao1 = new JTextField();
			tDescricao1.setBounds(new Rectangle(289, 141, 173, 20));
			tDescricao1.setEnabled(false);
			tDescricao1.setVisible(true);
		}
		return tDescricao1;
	}

	/**
	 * This method initializes tDescricao2	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTDescricao2() {
		if (tDescricao2 == null) {
			tDescricao2 = new JTextField();
			tDescricao2.setBounds(new Rectangle(289, 191, 173, 20));
			tDescricao2.setEnabled(false);
			tDescricao2.setVisible(true);
		}
		return tDescricao2;
	}

	/**
	 * This method initializes tDescricao3	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTDescricao3() {
		if (tDescricao3 == null) {
			tDescricao3 = new JTextField();
			tDescricao3.setBounds(new Rectangle(289, 238, 173, 20));
			tDescricao3.setEnabled(false);
			tDescricao3.setVisible(true);
		}
		return tDescricao3;
	}

	/**
	 * This method initializes tDescricao4	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTDescricao4() {
		if (tDescricao4 == null) {
			tDescricao4 = new JTextField();
			tDescricao4.setBounds(new Rectangle(501, 91, 173, 20));
			tDescricao4.setEnabled(false);
			tDescricao4.setVisible(true);
		}
		return tDescricao4;
	}

	/**
	 * This method initializes tDescricao5	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTDescricao5() {
		if (tDescricao5 == null) {
			tDescricao5 = new JTextField();
			tDescricao5.setBounds(new Rectangle(501, 141, 173, 20));
			tDescricao5.setEnabled(false);
			tDescricao5.setVisible(true);
		}
		return tDescricao5;
	}
	
}  //  @jve:decl-index=0:visual-constraint="10,10"
